package com.heima.admin.job;

import com.heima.admin.service.WemediaNewsAutoScanService;
import com.heima.feigns.wemedia.WemediaFeign;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * @Description:
 * @Version: V1.0
 */
@Component
@Slf4j
public class WeMediaNewsAutoScanJob {

    @Autowired
    WemediaFeign wemediaFeign;

    @Autowired
    WemediaNewsAutoScanService wemediaNewsAutoScanService;

    /**
     * 监视任务管理端口的任务管理的wemediaAutoScanJob
     * xxl-job那边会一直定时扫这个方法
     * 方法执行后判断当前时间是否<=发布时间
     * 如果其他的条件都合适那么就直接调用自动审核方法去检测，通过后发布
     */
    @XxlJob("wemediaAutoScanJob")
    public ReturnT<String> autoScanJob(String param) throws Exception {
        log.info("自媒体文章审核调度任务开始执行....");
        // 查询需要发布的文章id列表
        List<Integer> release = wemediaFeign.findRelease();
        //做非空校验和判断长度是否大于0
        if (release != null && release.size() > 0) {
            /**
             * 取出单个的待发布的文章id去自动审核
             * 所以说，他上课说的两变审核是硬代码问题
             * 直接调用自动审核方法，会自动审核saveAppArticle他需要审核的结果
             * 第一遍审核通过，待发布，第二步到了发布的时间，xxl-job还会再去审核一遍然后发布
             * */
            for (Integer id : release) {
                wemediaNewsAutoScanService.autoScanByMediaNewsId(id);
            }
        }
        log.info("自媒体文章审核调度任务执行结束....");
        //成功的回报
        return ReturnT.SUCCESS;

    }


}